<?php
//------------------------------------------------------------ Contraintes d'accès de la page

	// on vérifie que cette page est appelée à partir de l'index et que l'utilisateur a le droit de suppression
	if(isset($_SESSION) && ($GLOBALS['USER']['level'] >= 5 || $GLOBALS['USER']['admin'])){
	
		// l'identifiant de la donnée à supprimer est indiqué par un entier
		if(isset($_GET['id']) && numericInt($_GET['id'])){

?>
<?php
//------------------------------------------------------------ Suppression des données

/********************************* Règles :

	- id doit désigner une seule classification
	- La classification doit exister dans la BDD
	- La classification ne doit pas être liée à une autre entité

*****************************************/

	$statut = array(); // indique le statut du traitement du formulaire (echec ou succes) - tableau contenant les messages à afficher
	$erreur = false; // indique si une erreur a été rencontrée lors du traitement

	//---------------------------------- Contrôle des données ----------------------------------
		
	$nb_classifications = valueExists((int)$_GET['id'], "CODECLASSIFICATION", "classification", $connexion);
	
	if($nb_classifications == 0){ // la classification n'existe pas
		$statut[] = "La classification indiquée n'existe pas";
		$erreur = true;
	}else{
		
		// On compte le nombre de liens entre la classification et d'autres entités
		$query_recuperation_nb_liens_classification = "SELECT * ";
		$query_recuperation_nb_liens_classification .= "FROM ( ";
		$query_recuperation_nb_liens_classification .= "SELECT COUNT(*) AS nbFamillesSSFamilles ";
		$query_recuperation_nb_liens_classification .= "FROM classification c, a_pour_famille a ";
		$query_recuperation_nb_liens_classification .= "WHERE c.CODECLASSIFICATION = a.CODECLASSIFICATION ";
		$query_recuperation_nb_liens_classification .= "AND c.CODECLASSIFICATION = ".$_GET['id']." ";
		$query_recuperation_nb_liens_classification .= ") T1, ";
		$query_recuperation_nb_liens_classification .= "( ";
		$query_recuperation_nb_liens_classification .= "SELECT COUNT(*) AS nbSSFamillesGenre ";
		$query_recuperation_nb_liens_classification .= "FROM classification c, a_pour_sous_famille a ";
		$query_recuperation_nb_liens_classification .= "WHERE c.CODECLASSIFICATION = a.CODECLASSIFICATION ";
		$query_recuperation_nb_liens_classification .= "AND c.CODECLASSIFICATION = ".$_GET['id']." ";
		$query_recuperation_nb_liens_classification .= ") T2, ";
		$query_recuperation_nb_liens_classification .= "( ";
		$query_recuperation_nb_liens_classification .= "SELECT COUNT(*) AS nbGenreSSGenre ";
		$query_recuperation_nb_liens_classification .= "FROM classification c, a_pour_genre a ";
		$query_recuperation_nb_liens_classification .= "WHERE c.CODECLASSIFICATION = a.CODECLASSIFICATION ";
		$query_recuperation_nb_liens_classification .= "AND c.CODECLASSIFICATION = ".$_GET['id']." ";
		$query_recuperation_nb_liens_classification .= ") T3, ";
		$query_recuperation_nb_liens_classification .= "( ";
		$query_recuperation_nb_liens_classification .= "SELECT COUNT(*) AS nbSSGenreEspece ";
		$query_recuperation_nb_liens_classification .= "FROM classification c, a_pour_sous_genre a ";
		$query_recuperation_nb_liens_classification .= "WHERE c.CODECLASSIFICATION = a.CODECLASSIFICATION ";
		$query_recuperation_nb_liens_classification .= "AND c.CODECLASSIFICATION = ".$_GET['id']." ";
		$query_recuperation_nb_liens_classification .= ") T4, ";
		$query_recuperation_nb_liens_classification .= "( ";
		$query_recuperation_nb_liens_classification .= "SELECT COUNT(*) AS nbEspeceSSEspece ";
		$query_recuperation_nb_liens_classification .= "FROM classification c, a_pour_espece a ";
		$query_recuperation_nb_liens_classification .= "WHERE c.CODECLASSIFICATION = a.CODECLASSIFICATION ";
		$query_recuperation_nb_liens_classification .= "AND c.CODECLASSIFICATION = ".$_GET['id']." ";
		$query_recuperation_nb_liens_classification .= ") T5, ";
		$query_recuperation_nb_liens_classification .= "( ";
		$query_recuperation_nb_liens_classification .= "SELECT COUNT(*) AS nbFamilleGenre ";
		$query_recuperation_nb_liens_classification .= "FROM classification c, famille_a_pour_genre a ";
		$query_recuperation_nb_liens_classification .= "WHERE c.CODECLASSIFICATION = a.CODECLASSIFICATION ";
		$query_recuperation_nb_liens_classification .= "AND c.CODECLASSIFICATION = ".$_GET['id']." ";
		$query_recuperation_nb_liens_classification .= ") T6, ";
		$query_recuperation_nb_liens_classification .= "( ";
		$query_recuperation_nb_liens_classification .= "SELECT COUNT(*) AS nbGenreEspece ";
		$query_recuperation_nb_liens_classification .= "FROM classification c, genre_a_pour_espece a ";
		$query_recuperation_nb_liens_classification .= "WHERE c.CODECLASSIFICATION = a.CODECLASSIFICATION ";
		$query_recuperation_nb_liens_classification .= "AND c.CODECLASSIFICATION = ".$_GET['id']." ";
		$query_recuperation_nb_liens_classification .= ") T7, ";
		$query_recuperation_nb_liens_classification .= "( ";
		$query_recuperation_nb_liens_classification .= "SELECT COUNT(*) AS nbFamilleTaxon ";
		$query_recuperation_nb_liens_classification .= "FROM classification c, est_de_famille a ";
		$query_recuperation_nb_liens_classification .= "WHERE c.CODECLASSIFICATION = a.CODECLASSIFICATION ";
		$query_recuperation_nb_liens_classification .= "AND c.CODECLASSIFICATION = ".$_GET['id']." ";
		$query_recuperation_nb_liens_classification .= ") T8, ";
		$query_recuperation_nb_liens_classification .= "( ";
		$query_recuperation_nb_liens_classification .= "SELECT COUNT(*) AS nbSSFamilleTaxon ";
		$query_recuperation_nb_liens_classification .= "FROM classification c, est_de_sous_famille a ";
		$query_recuperation_nb_liens_classification .= "WHERE c.CODECLASSIFICATION = a.CODECLASSIFICATION ";
		$query_recuperation_nb_liens_classification .= "AND c.CODECLASSIFICATION = ".$_GET['id']." ";
		$query_recuperation_nb_liens_classification .= ") T9, ";
		$query_recuperation_nb_liens_classification .= "( ";
		$query_recuperation_nb_liens_classification .= "SELECT COUNT(*) AS nbGenreTaxon ";
		$query_recuperation_nb_liens_classification .= "FROM classification c, appartient_a_genre a ";
		$query_recuperation_nb_liens_classification .= "WHERE c.CODECLASSIFICATION = a.CODECLASSIFICATION ";
		$query_recuperation_nb_liens_classification .= "AND c.CODECLASSIFICATION = ".$_GET['id']." ";
		$query_recuperation_nb_liens_classification .= ") T10, ";
		$query_recuperation_nb_liens_classification .= "( ";
		$query_recuperation_nb_liens_classification .= "SELECT COUNT(*) AS nbSSGenreTaxon ";
		$query_recuperation_nb_liens_classification .= "FROM classification c, appartient_a_sous_genre a ";
		$query_recuperation_nb_liens_classification .= "WHERE c.CODECLASSIFICATION = a.CODECLASSIFICATION ";
		$query_recuperation_nb_liens_classification .= "AND c.CODECLASSIFICATION = ".$_GET['id']." ";
		$query_recuperation_nb_liens_classification .= ") T11, ";
		$query_recuperation_nb_liens_classification .= "( ";
		$query_recuperation_nb_liens_classification .= "SELECT COUNT(*) AS nbEspeceTaxon ";
		$query_recuperation_nb_liens_classification .= "FROM classification c, est_de_espece a ";
		$query_recuperation_nb_liens_classification .= "WHERE c.CODECLASSIFICATION = a.CODECLASSIFICATION ";
		$query_recuperation_nb_liens_classification .= "AND c.CODECLASSIFICATION = ".$_GET['id']." ";
		$query_recuperation_nb_liens_classification .= ") T12, ";
		$query_recuperation_nb_liens_classification .= "( ";
		$query_recuperation_nb_liens_classification .= "SELECT COUNT(*) AS nbSSEspeceTaxon ";
		$query_recuperation_nb_liens_classification .= "FROM classification c, est_de_sous_espece a ";
		$query_recuperation_nb_liens_classification .= "WHERE c.CODECLASSIFICATION = a.CODECLASSIFICATION ";
		$query_recuperation_nb_liens_classification .= "AND c.CODECLASSIFICATION = ".$_GET['id']." ";
		$query_recuperation_nb_liens_classification .= ") T13, ";
		$query_recuperation_nb_liens_classification .= "( ";
		$query_recuperation_nb_liens_classification .= "SELECT COUNT(*) AS nbVarieteTaxon ";
		$query_recuperation_nb_liens_classification .= "FROM classification c, a_comme_variete a ";
		$query_recuperation_nb_liens_classification .= "WHERE c.CODECLASSIFICATION = a.CODECLASSIFICATION ";
		$query_recuperation_nb_liens_classification .= "AND c.CODECLASSIFICATION = ".$_GET['id']." ";
		$query_recuperation_nb_liens_classification .= ") T14, ";
		$query_recuperation_nb_liens_classification .= "( ";
		$query_recuperation_nb_liens_classification .= "SELECT COUNT(*) AS nbTaxons ";
		$query_recuperation_nb_liens_classification .= "FROM classification c, taxon t ";
		$query_recuperation_nb_liens_classification .= "WHERE c.CODECLASSIFICATION = t.CODECLASSIFICATION ";
		$query_recuperation_nb_liens_classification .= "AND c.CODECLASSIFICATION = ".$_GET['id']." ";
		$query_recuperation_nb_liens_classification .= ") T15 ";
		
		$result_recuperation_nb_liens_classification = mysql_query($query_recuperation_nb_liens_classification, $connexion) or logError("RECUPERATION NB LIENS CLASSIFICATION-".$query_recuperation_nb_liens_classification."-".mysql_error());
		
		if(mysql_num_rows($result_recuperation_nb_liens_classification) == 1){ // on a réussi à récupérer les données de la classification à supprimer
			
			$tab_recuperation_nb_liens_classification = mysql_fetch_row($result_recuperation_nb_liens_classification);
			
			if($tab_recuperation_nb_liens_classification[0] > 0){
				$statut[] = "Cette classification est utilisée par ".$tab_recuperation_nb_liens_classification[0]." classement(s) Famille/Sous-Famille";
				$erreur = true;
			}
			if($tab_recuperation_nb_liens_classification[1] > 0){
				$statut[] = "Cette classification est utilisée par ".$tab_recuperation_nb_liens_classification[1]." classement(s) Sous-Famille/Genre";
				$erreur = true;
			}
			if($tab_recuperation_nb_liens_classification[2] > 0){
				$statut[] = "Cette classification est utilisée par ".$tab_recuperation_nb_liens_classification[2]." classement(s) Genre/Sous-Genre";
				$erreur = true;
			}
			if($tab_recuperation_nb_liens_classification[3] > 0){
				$statut[] = "Cette classification est utilisée par ".$tab_recuperation_nb_liens_classification[3]." classement(s) Sous-Genre/Espece";
				$erreur = true;
			}
			if($tab_recuperation_nb_liens_classification[4] > 0){
				$statut[] = "Cette classification est utilisée par ".$tab_recuperation_nb_liens_classification[4]." classement(s) Espece/Sous-Espece";
				$erreur = true;
			}
			if($tab_recuperation_nb_liens_classification[5] > 0){
				$statut[] = "Cette classification est utilisée par ".$tab_recuperation_nb_liens_classification[5]." classement(s) Famille/Genre";
				$erreur = true;
			}
			if($tab_recuperation_nb_liens_classification[6] > 0){
				$statut[] = "Cette classification est utilisée par ".$tab_recuperation_nb_liens_classification[6]." classement(s) Genre/Espece";
				$erreur = true;
			}
			if($tab_recuperation_nb_liens_classification[7] > 0){
				$statut[] = "Cette classification est utilisée par ".$tab_recuperation_nb_liens_classification[7]." classement(s) Famille/Taxon";
				$erreur = true;
			}
			if($tab_recuperation_nb_liens_classification[8] > 0){
				$statut[] = "Cette classification est utilisée par ".$tab_recuperation_nb_liens_classification[8]." classement(s) Sous-Famille/Taxon";
				$erreur = true;
			}
			if($tab_recuperation_nb_liens_classification[9] > 0){
				$statut[] = "Cette classification est utilisée par ".$tab_recuperation_nb_liens_classification[9]." classement(s) Genre/Taxon";
				$erreur = true;
			}
			if($tab_recuperation_nb_liens_classification[10] > 0){
				$statut[] = "Cette classification est utilisée par ".$tab_recuperation_nb_liens_classification[10]." classement(s) Sous-Genre/Taxon";
				$erreur = true;
			}
			if($tab_recuperation_nb_liens_classification[11] > 0){
				$statut[] = "Cette classification est utilisée par ".$tab_recuperation_nb_liens_classification[11]." classement(s) Espece/Taxon";
				$erreur = true;
			}
			if($tab_recuperation_nb_liens_classification[12] > 0){
				$statut[] = "Cette classification est utilisée par ".$tab_recuperation_nb_liens_classification[12]." classement(s) Sous-Espece/Taxon";
				$erreur = true;
			}
			if($tab_recuperation_nb_liens_classification[13] > 0){
				$statut[] = "Cette classification est utilisée par ".$tab_recuperation_nb_liens_classification[13]." classement(s) Variete/Taxon";
				$erreur = true;
			}
			if($tab_recuperation_nb_liens_classification[14] > 0){
				$statut[] = "Cette classification est la référence de ".$tab_recuperation_nb_liens_classification[14]." taxon(s)";
				$erreur = true;
			}			
			
		}else{
			$statut[] = "Une donnée n'a pas pu être vérifiée";
			$erreur = true;
		}
		
		mysql_free_result($result_recuperation_nb_liens_classification);
		
	}
	
	//---------------------------------- Suppression de la classification ----------------------------------
	
	if(!$erreur){ // aucune erreur n'a été rencontrée jusqu'ici
	
		// Suppression des informations de la table CLASSIFICATION
		$query_suppression_classification = "DELETE FROM classification WHERE CODECLASSIFICATION = ".$_GET['id'];
		$result_suppression_classification = mysql_query($query_suppression_classification, $connexion) or logError("SUPPRESSION CLASSIFICATION-".$query_suppression_classification."-".mysql_error());
		
		if($result_suppression_classification === true){
			$statut[] = "La classification a été supprimée - redirection dans 2 sec...";
			logAction("CLASSIFICATION (id: ".$_GET['id'].") SUPPRIMEE par ".capitalise($GLOBALS['USER']['prenom'])." ".mb_strtoupper($GLOBALS['USER']['nom'])." (".$GLOBALS['USER']['login'].")");
		}else{
			$statut[] = "Erreur critique lors de la suppression de la classification";
			$erreur = true;
		}

	}

?>
<?php
//------------------------------------------------------------ Affichage du statut
	
	if($erreur){
		boutonRetour("index.php?p=gestion/classification_gere"); // appel à la fonction boutonRetour() définie dans fonctions.php
		afficherStatut($statut, 3); // appel à la fonction afficherStatut() définie dans fonctions.php
	}else{
		afficherStatut($statut, 1); // appel à la fonction afficherStatut() définie dans fonctions.php
		redirection("gestion/classification_gere", 2);
	}

?>
<?php
	if($erreur){
?>
<div class="information">
	<div class="titre">Information</div>
	<h4>Erreurs de suppression :</h4>
	<p>
		Si la ressource à supprimer est liée à d'autres éléments, vous ne pourrez pas la supprimer.<br />
		Si vous souhaitez tout de même la supprimer, il vous faudra préalablement supprimer les éléments auxquels elle est liée.
	</p>
</div>
<?php
	}
?>
<?php
//------------------------------------------------------------ Accès refusé à la page

		}else{
			afficherStatut("La classification n'est pas ou mal indiquée", 3); // appel à la fonction afficherStatut() définie dans fonctions.php
		}

	}else{
		if(isset($_SESSION)){
			if(!isset($_SESSION['user_id'])){ // si l'utilisateur n'est pas connecté
				include("pages/connexion.php");
			}else{ // si l'utilisateur est connecté et qu'il n'a pas accès à la page, c'est qu'il n'a pas le droit d'utilisation nécessaire
				include("pages/401.htm");
			}
		}
	}

?>